package com.cn.qtms.base.service;

import com.cn.qtms.base.entity.BaseEntity;
import com.cn.qtms.common.page.PageRes;
import com.cn.qtms.common.result.QueryParam;
import com.cn.qtms.common.result.Result;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Name:BaseService
 * @Description: 基础业务接口
 * @Author: Neil
 * @Date: 2019-08-21 15:59
 **/
public interface BaseService<T extends BaseEntity, ID> extends BaseJpaService<T, ID> {
    /**
     * page方法 提供带条件分页查询
     * @param request
     * @return
     */
    Result<PageRes<T>> page(QueryParam request);

    /**
     * list方法
     * @param request
     * @return
     */
    List<T> list(HashMap<String, Object> request);

    /**
     * id方法
     * @param id
     * @return
     */
    T findById(ID id);

    /**
     * count 方法
     * @param request
     * @return
     */
    long findCount(HashMap<String, Object> request);

    /**
     * 新增方法
     * @param model
     * @return
     */
    T create(T model);

    /**
     * 批量新增方法
     * @param list
     * @return
     */
    List<T> createList(List<T> list);

    /**
     * 修改方法
     * @param model
     * @return
     */
    T update(T model);

    /**
     * 部分修改方法
     * @param map
     * @return
     */
    T updateState(HashMap<String, Object> map);

    /**
     * 单删除方法
     * @param id
     * @return
     */
    T del(ID id);

    /**
     * 多删除方法
     * @param map
     * @return
     */
    List<T> del(Map<String, ID[]> map);

}
